/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package multisistema.objetos;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import multisistema.db.MySQL;

/**
 *
 * @author EDONALDO01
 */
public class Permiso {

    private int id;
    private String nombre;
    private boolean ingresoSistema;
    private Privilegio miembros;
    private boolean ingresosEgresos;
    private Privilegio ingresos;
    private Privilegio egresos;
    private boolean graficos;
    private boolean totales;
    private boolean calculadora;
    private boolean email;
    private boolean mensajes;
    private boolean web;
    private boolean facebook;

    public Permiso(){
        id = -1;
        nombre = "";
        ingresoSistema = false;
        miembros = null;
        ingresosEgresos = false;
        ingresos = null;
        egresos = null;
        graficos = false;
        totales = false;
        calculadora = false;
        email = false;
        mensajes = false;
        web = false;
        facebook = false;
    }
    
    public Permiso(int id) {
        this.id = id;
        getById();
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the ingresoSistema
     */
    public boolean isIngresoSistema() {
        return ingresoSistema;
    }

    /**
     * @param ingresoSistema the ingresoSistema to set
     */
    public void setIngresoSistema(boolean ingresoSistema) {
        this.ingresoSistema = ingresoSistema;
    }

    /**
     * @return the miembros
     */
    public Privilegio getMiembros() {
        return miembros;
    }

    /**
     * @param miembros the miembros to set
     */
    public void setMiembros(Privilegio miembros) {
        this.miembros = miembros;
    }

    /**
     * @return the ingresosEgresos
     */
    public boolean isIngresosEgresos() {
        return ingresosEgresos;
    }

    /**
     * @param ingresosEgresos the ingresosEgresos to set
     */
    public void setIngresosEgresos(boolean ingresosEgresos) {
        this.ingresosEgresos = ingresosEgresos;
    }

    /**
     * @return the ingresos
     */
    public Privilegio getIngresos() {
        return ingresos;
    }

    /**
     * @param ingresos the ingresos to set
     */
    public void setIngresos(Privilegio ingresos) {
        this.ingresos = ingresos;
    }

    /**
     * @return the egresos
     */
    public Privilegio getEgresos() {
        return egresos;
    }

    /**
     * @param egresos the egresos to set
     */
    public void setEgresos(Privilegio egresos) {
        this.egresos = egresos;
    }

    /**
     * @return the graficos
     */
    public boolean isGraficos() {
        return graficos;
    }

    /**
     * @param graficos the graficos to set
     */
    public void setGraficos(boolean graficos) {
        this.graficos = graficos;
    }

    /**
     * @return the totales
     */
    public boolean isTotales() {
        return totales;
    }

    /**
     * @param totales the totales to set
     */
    public void setTotales(boolean totales) {
        this.totales = totales;
    }

    /**
     * @return the calculadora
     */
    public boolean isCalculadora() {
        return calculadora;
    }

    /**
     * @param calculadora the calculadora to set
     */
    public void setCalculadora(boolean calculadora) {
        this.calculadora = calculadora;
    }

    /**
     * @return the email
     */
    public boolean isEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(boolean email) {
        this.email = email;
    }

    /**
     * @return the mensajes
     */
    public boolean isMensajes() {
        return mensajes;
    }

    /**
     * @param mensajes the mensajes to set
     */
    public void setMensajes(boolean mensajes) {
        this.mensajes = mensajes;
    }

    /**
     * @return the web
     */
    public boolean isWeb() {
        return web;
    }

    /**
     * @param web the web to set
     */
    public void setWeb(boolean web) {
        this.web = web;
    }

    /**
     * @return the facebook
     */
    public boolean isFacebook() {
        return facebook;
    }

    /**
     * @param facebook the facebook to set
     */
    public void setFacebook(boolean facebook) {
        this.facebook = facebook;
    }

    public static List<Permiso> getPermisos() {
        List<Permiso> lista = new ArrayList<Permiso>();
        Statement stmt = null;
        ResultSet rs = null;
        MySQL mydb = new MySQL();
        Connection conn = mydb.getConn();
        try {
            stmt = conn.createStatement();
            if (stmt.execute("SELECT * FROM `tbl_permisos` ")) {
                rs = stmt.getResultSet();
            }

            while (rs.next()) {
                Permiso perm = new Permiso();
                perm.setId(rs.getInt("id_permiso"));
                perm.setNombre(rs.getString("nombre_permiso"));
                perm.setIngresoSistema(rs.getBoolean("ingreso_sistema"));
                perm.setMiembros(new Privilegio(rs.getInt("miembros")));
                perm.setIngresosEgresos(rs.getBoolean("ingresos_egresos"));
                perm.setIngresos(new Privilegio(rs.getInt("ingresos")));
                perm.setEgresos(new Privilegio(rs.getInt("egresos")));
                perm.setGraficos(rs.getBoolean("graficos"));
                perm.setTotales(rs.getBoolean("totales"));
                perm.setCalculadora(rs.getBoolean("calculadora"));
                perm.setEmail(rs.getBoolean("email"));
                perm.setMensajes(rs.getBoolean("mensajes"));
                perm.setWeb(rs.getBoolean("web"));
                perm.setFacebook(rs.getBoolean("facebook"));
                lista.add(perm);
            }
        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException sqlEx) {
                }
                rs = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException sqlEx) {
                }
                stmt = null;
            }
        }
        try {
            conn.close();
        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }
        return lista;
    }

    private void getById() {
        Statement stmt = null;
        ResultSet rs = null;
        MySQL mydb = new MySQL();
        Connection conn = mydb.getConn();
        try {
            stmt = conn.createStatement();
            if (stmt.execute("SELECT * FROM `tbl_permisos` WHERE `id_permiso` = " + this.getId())) {
                rs = stmt.getResultSet();
            }
            if (rs.next()) {
                this.setNombre(rs.getString("nombre_permiso"));
                this.setIngresoSistema(rs.getBoolean("ingreso_sistema"));
                this.setMiembros(new Privilegio(rs.getInt("miembros")));
                this.setIngresosEgresos(rs.getBoolean("ingresos_egresos"));
                this.setIngresos(new Privilegio(rs.getInt("ingresos")));
                this.setEgresos(new Privilegio(rs.getInt("egresos")));
                this.setGraficos(rs.getBoolean("graficos"));
                this.setTotales(rs.getBoolean("totales"));
                this.setCalculadora(rs.getBoolean("calculadora"));
                this.setEmail(rs.getBoolean("email"));
                this.setMensajes(rs.getBoolean("mensajes"));
                this.setWeb(rs.getBoolean("web"));
                this.setFacebook(rs.getBoolean("facebook"));
            } else {
                this.setId(-1);
            }
        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException sqlEx) {
                }
                rs = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException sqlEx) {
                }
                stmt = null;
            }
        }
        try {
            conn.close();
        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }
    }
}
